[IA64] VTI: Fix two bugs
authorawilliam@xenbuild.aw <awilliam@xenbuild.aw>
Fri, 24 Feb 2006 20:38:26 +0000 (13:38 -0700)
committerawilliam@xenbuild.aw <awilliam@xenbuild.aw>
Fri, 24 Feb 2006 20:38:26 +0000 (13:38 -0700)
1. Vmx_check_pending_irq should not be called in vmx_vcpu_set_eoi,
because vmx_vcpu_increment_iip is called after vmx_vcpu_set_eoi. That
is, the first instruction of guest interrupt handler will be skipped.
2. Remove code segment which was used to send events to VTIdomain, when
dom0 was VTIdomain. This is not needed any more, and will cause
VTIdomain on SMP-HOST complain "Unexpected interrupt ..." .

Signed-off-by: Anthony Xu <anthony.xu@intel.com>
xen/arch/ia64/vmx/vlsapic.c
xen/arch/ia64/vmx/vmx_process.c

index 7fa89f653744ea703aebe34538891ce15a999221..79a93018e6b05139a94485d405cfc8d7ae71f690 100644 (file)
@@ -575,7 +575,8 @@ void guest_write_eoi(VCPU *vcpu)
     VLSAPIC_INSVC(vcpu,vec>>6) &= ~(1UL <<(vec&63));
     local_irq_restore(spsr);
     VCPU(vcpu, eoi)=0;    // overwrite the data
-    vmx_check_pending_irq(vcpu);
+    vcpu->arch.irq_new_pending=1;
+//    vmx_check_pending_irq(vcpu);
 }
 
 uint64_t guest_read_vivr(VCPU *vcpu)
index 436ecde0f90ccf8379c572cf708218fc752bd024..6e2a0053d9533830a83432a203ab27075750241d 100644 (file)
@@ -262,10 +262,10 @@ void leave_hypervisor_tail(struct pt_regs *regs)
                 *
                 * Now hardcode the vector as 0x10 temporarily
                 */
-               if (event_pending(v)&&(!(VLSAPIC_INSVC(v,0)&(1UL<<0x10)))) {
-                       VCPU(v, irr[0]) |= 1UL << 0x10;
-                       v->arch.irq_new_pending = 1;
-               }
+//             if (event_pending(v)&&(!(VLSAPIC_INSVC(v,0)&(1UL<<0x10)))) {
+//                     VCPU(v, irr[0]) |= 1UL << 0x10;
+//                     v->arch.irq_new_pending = 1;
+//             }
 
                if ( v->arch.irq_new_pending ) {
                        v->arch.irq_new_pending = 0;